#ifndef SEMAFOROSPISOS_H_
#define SEMAFOROSPISOS_H_

#include "Semaforo.h"
#include "Logger.h"
#include <string>

class ManejadorSemPisos {

private:

	int cantidadPisos;
	Semaforo** semPisos;
	Logger* logger;

	void crearSemaforos();

	void log(std::string message);

	void sync(std::string message);

	void debug(std::string message);

public:

	ManejadorSemPisos(int cantidadPisos);

	~ManejadorSemPisos();

	/**
	 *
	 * Lo hace la persona cuando espera al ascensor.
	 */
	void esperoAscensor(int piso, char estado);

	/**
	 * Lo hace la persona para esperar que abran las puertas y poder subir
	 */
	void esperoCierre(int piso, char estado);

	/**
	 * Lo hace el ascensor cuando espera a las personas.
	 */
	void abrir(int piso, char sentido, int cantidad);

	/**
	 * Lo hace el ascensor cuando espera a las personas.
	 */
	void cerrar(int piso, char sentido, int cantidad);

	void inicializar();

	void liberarSemaforos();

};

#endif /* SEMAFOROSPISOS_H_ */
